﻿using System;
namespace Producers.Arireg.Xtee.Riik.Ee.Producer.Arireg {
    
    
    public class XEvkSyndmus : global::Xtee.Core.Schema.XsdString {
        
        public const string ESMAREGISTREERIMINE = "ESMAREG";
        
        public const string AKTSIAVÕIOSAKAPITALISUURENDAMINEVÕIVÄHENDAMINE = "KAPMUUT";
        
        public const string PÕHIKIRJAMUUTMINE = "POHMUUT";
        
        public const string ÄRINIMEMUUTMINE = "ARINMUUT";
        
        public const string ETTEVÕTLUSVORMIMUUTMINE = "ETVMUUT";
        
        public const string ÜHINEMINE = "YHIN";
        
        public const string JAGUNEMINE = "JAGUN";
        
        public const string REGISTRISTKUSTUTAMINE = "REGKUST";
        
        public XEvkSyndmus(string value) : 
                base(value) {
            this.Validate();
            string annot = null;
            if (Value == "ESMAREG") {
                annot = "esmaregistreerimine";
            }
            if (Value == "KAPMUUT") {
                annot = "aktsia- või osakapitali suurendamine või vähendamine";
            }
            if (Value == "POHMUUT") {
                annot = "põhikirja muutmine";
            }
            if (Value == "ARINMUUT") {
                annot = "ärinime muutmine";
            }
            if (Value == "ETVMUUT") {
                annot = "ettevõtlusvormi muutmine";
            }
            if (Value == "YHIN") {
                annot = "ühinemine";
            }
            if (Value == "JAGUN") {
                annot = "jagunemine";
            }
            if (Value == "REGKUST") {
                annot = "registrist kustutamine";
            }
            if (annot!=null) {
                this._annotation = annot;
            }
            else {
                throw new global::Xtee.Core.Types.XteeSimpleTypeValidationException(string.Format("Enumeration on [{0}] does not allow value : [{1}] ", this.GetType().Name,Value.ToString()));;
            }
        }
        
        public XEvkSyndmus() : 
                base(string.Empty) {
        }
        
        public static bool TryParse(string value, out global::Producers.Arireg.Xtee.Riik.Ee.Producer.Arireg.XEvkSyndmus result) {
            try {
                result = new global::Producers.Arireg.Xtee.Riik.Ee.Producer.Arireg.XEvkSyndmus(value);
                return true;
            }
            catch (System.Exception ) {
                result = null;
                return false;
            }
        }
        
        public static implicit operator String (XEvkSyndmus value) {
            return value.Value;
        }
        
        public static implicit operator XEvkSyndmus (string value) {
            if (value==null) {
                return null;
            }
            return new XEvkSyndmus(value);
        }
    }
}
